package hteink.api.intf;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

public interface IDpiManager {

    /**
     * @return 默认 dpi, ro.sf.lcd_density 属性的值
     */
    int getDefaultDpi();

    /**
     * 获取包名对应的 dpi 值
     *
     * @param pkgName 包名
     * @return dpi 值
     */
    int getDpi(@NonNull String pkgName);

    /**
     * 设置 dpi 值 <br>
     *
     * @param pkgName 包名
     * @param clsName 类名, 可为 null.<br>
     *                如果参数 clsName 不为空且是当前显示的 activity class, 设置 dpi 后, 会立即更新当前页面;<br>
     *                如果参数 clsName 为空, 当前显示的界面是 pkgName 所属界面, 则该界面退出. 重新启动后, 显示为 dpi设置的界面效果;<br>
     * @param dpi     dpi 值
     */
    void setDpi(@NonNull String pkgName, @Nullable String clsName, int dpi);

    /**
     * 当前 dpi 是否 enabled
     *
     * @param pkgName 包名
     * @return true, enabled; false, disabled
     */
    boolean isDpiEnabled(@NonNull String pkgName);

    /**
     * 设置 dpi 使能
     *
     * @param pkgName 包名
     * @param enabled true, 设置 dpi 使能; false, 设置 dpi 无效;
     */
    void setDpiEnabled(@NonNull String pkgName, boolean enabled);

}
